/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Helpers;

import java.util.Vector;

/**
 *
 * @author cigol
 */
public class Karty {

    public static Vector<Integer> bubbleSort(Vector<Integer> ar) {
        int out, in;
        for (out = ar.size() - 1; out > 0; out--) {
            for (in = 0; in < out; in++) {
                if (ar.get(in) > ar.get(in + 1)) {
                    swap(ar, in, in + 1);
                }
            }
        }
        return ar;
    }

    private static void swap(Vector<Integer> ar, int one, int two) {
        int temp = ar.get(one);
        ar.set(one, ar.get(two));
        ar.set(two, temp);
    }


  public static String wypiszFigure(int id){
      int number = id/4;
      String figura = null;

      if(number==0){figura="2";}
      if(number==1){figura="3";}
      if(number==2){figura="4";}
      if(number==3){figura="5";}
      if(number==4){figura="6";}
      if(number==5){figura="7";}
      if(number==6){figura="8";}
      if(number==7){figura="9";}
      if(number==8){figura="10";}
      if(number==9){figura="J";}
      if(number==10){figura="Q";}
      if(number==11){figura="K";}
      if(number==12){figura="A";}

      return figura;
        //System.out.println("Jestem figurą " + figura);
      }
  
  public static String wypiszKolor(int id){
      int number = id%4;
      String kolor = null;


      if(number==0){kolor="karo";}
      if(number==1){kolor="kier";}
      if(number==2){kolor="pik";}
      if(number==3){kolor="trefl";}

      return kolor;
        //System.out.println("Jestem kolorem " + kolor);
      }


  public static Integer numerHierarchii(Vector <Integer> ar){

      /* Funkcja do której przekazujemy Vector z pięcioma id kart.
       * Funkcja jeśli odszuka pokera królewskiego zwróci wartość
       * najwyższą tj 9, jeśli np. Full'a to 6, jeśli dwie parki
       * to 2 etc.
       * Na podstawie tych liczb wiemy który gracz wygra daną turę
       * (wystarczy tylko zobaczyć kto ma największą liczbę)
      */


      Vector<Integer> tmp1 = new Vector<Integer>(5);
      Vector<Integer> tmp2 = new Vector<Integer>(5);

      tmp1.addAll(ar);
      tmp2.addAll(ar);

      for (int i = 0; i < 5; i++) {
          tmp1.set(i, (tmp1.get(i) % 4));     // od teraz Vector tmp1 przetrzymuje id kolorów danych kart.
      }
      bubbleSort(tmp1);
      //System.out.println("kolory: " + tmp1);

      for (int i = 0; i < 5; i++) {
          tmp2.set(i, (tmp2.get(i) / 4));     // od teraz Vector tmp2 przetrzymuje id figur danych kart.
      }
      bubbleSort(tmp2);
      //System.out.println("figury: " + tmp2);



      /*** Poker królewski + poket zwykły ***/
      if (tmp1.get(0) == tmp1.get(4)) { // mamy 5 kolorów takich samych
          if ((tmp2.get(0) + 1 == tmp2.get(1)) && (tmp2.get(1) + 1 == tmp2.get(2)) && (tmp2.get(2) + 1 == tmp2.get(3)) && (tmp2.get(3) + 1 == tmp2.get(4))) {
              if (tmp2.get(0) == 8) {
                  //System.out.println("poker królewski!");
                  return 9;
              } else {
                  //System.out.println("poker zwykly!");
                  return 8;
              }
          }
      }

      /*** KARETA ***/
      if ((tmp2.get(0) == tmp2.get(3)) || (tmp2.get(1) == tmp2.get(4))) {
          //System.out.println("kareta!");
          return 7;
      }

      /*** FULL ***/
      if (((tmp2.get(0) == tmp2.get(1)) && (tmp2.get(2) == tmp2.get(4))) || ((tmp2.get(0) == tmp2.get(2)) && (tmp2.get(3) == tmp2.get(4)))) {
          //System.out.println("full!");
          return 6;
      }

      /*** KOLOR ***/
      if (tmp1.get(0) == tmp1.get(4)) {
          //System.out.println("kolor!");
          return 5;
      }

      /*** STRIT ***/
      if ((tmp2.get(0) + 1 == tmp2.get(1)) && (tmp2.get(1) + 1 == tmp2.get(2)) && (tmp2.get(2) + 1 == tmp2.get(3)) && (tmp2.get(3) + 1 == tmp2.get(4))) {
          //System.out.println("strit!");
          return 4;
      }

      /*** TRÓJKA ***/
      if ((tmp2.get(0) == tmp2.get(2)) || (tmp2.get(1) == tmp2.get(3)) || (tmp2.get(2) == tmp2.get(4))) {
          //System.out.println("trójka!");
          return 3;
      }

      /*** DWIE PARY ***/
      if (((tmp2.get(0) == tmp2.get(1)) && (tmp2.get(2) == tmp2.get(3))) || ((tmp2.get(0) == tmp2.get(1)) && (tmp2.get(3) == tmp2.get(4))) || ((tmp2.get(1) == tmp2.get(2)) && (tmp2.get(3) == tmp2.get(4)))) {
          //System.out.println("dwie pary!");
          return 2;
      }

      /*** PARA ***/
      if ((tmp2.get(0) == tmp2.get(1)) || (tmp2.get(1) == tmp2.get(2)) || (tmp2.get(2) == tmp2.get(3)) || (tmp2.get(3) == tmp2.get(4))) {
          //System.out.println("para!");
          return 1;
      }

      /*** W POZOSTAŁYM PRZYPADKU - CZYLI GDY NIC NIE MA ***/
      //System.out.println("wysoka karta!");
      return 0;

    }

  public static String hierarchia(int id){

      /* Funkcja dostająca int'a zwróconego z 'hierarchi'
       * i zwracająca nam co dana wartość (int) oznacza.
       */

      String nazwa = null;

      if(id==9){nazwa="Poker królewski";}
      if(id==8){nazwa="Poker";}
      if(id==7){nazwa="Kareta";}
      if(id==6){nazwa="Full";}
      if(id==5){nazwa="Kolor";}
      if(id==4){nazwa="Strit";}
      if(id==3){nazwa="Trójka";}
      if(id==2){nazwa="Dwie pary";}
      if(id==1){nazwa="Para";}
      if(id==0){nazwa="Wysoka karta";}

      return nazwa;
      }
  
}
